"use client"
import { Button, Flex } from 'antd';
import Image from "next/image";
import React, { useState, useEffect } from 'react';
import ReactECharts from 'echarts-for-react';
import cloneDeep from 'lodash.clonedeep';


export default function Home() {
    const DEFAULT_OPTION = {
        title: {
            text:'趋势图',
        },
        tooltip: {
            trigger: 'axis'
        },
        // legend: {
        //     data:['最新数值', '预购队列']
        // },
        toolbox: {
            show: true,
            feature: {
                // dataView: {readOnly: false},
                // restore: {},
                saveAsImage: {}
            }
        },
        grid: {
            top: 60,
            left: 30,
            right: 60,
            bottom:30
        },
        dataZoom: {
            show: false,
            start: 0,
            end: 100
        },
        visualMap: {
            show: false,
            min: 0,
            max: 1000,
            color: ['#BE002F', '#F20C00', '#F00056', '#FF2D51', '#FF2121', '#FF4C00', '#FF7500',
                '#FF8936', '#FFA400', '#F0C239', '#FFF143', '#FAFF72', '#C9DD22', '#AFDD22',
                '#9ED900', '#00E500', '#0EB83A', '#0AA344', '#0C8918', '#057748', '#177CB0']
        },
        xAxis: [
            {
                type: 'category',
                boundaryGap: true,
                data: (function (){
                    let now = new Date();
                    let res = [];
                    let len = 50;
                    while (len--) {
                        res.unshift(now.toLocaleTimeString().replace(/^\D*/,''));
                        now = new Date(now - 2000);
                    }
                    return res;
                })()
            }
        ],
        yAxis: [
            {
                type: 'value',
                scale: true,
                name: '数值',
                // max: 20,
                min: -5,
                boundaryGap: [0.2, 0.2]
            },
            {
                type: 'value',
                scale: true,
                name: '数值',
                // max: 20,
                min: -5,
                boundaryGap: [0.2, 0.2]
            }
        ],
        series: [
            // {
            //     name:'预购队列',
            //     type:'bar',
            //     xAxisIndex: 1,
            //     yAxisIndex: 1,
            //     itemStyle: {
            //         normal: {
            //             barBorderRadius: 4,
            //         }
            //     },
            //     animationEasing: 'elasticOut',
            //     animationDelay: function (idx) {
            //         return idx * 10;
            //     },
            //     animationDelayUpdate: function (idx) {
            //         return idx * 10;
            //     },
            //     data:(function (){
            //         let res = [];
            //         let len = 50;
            //         while (len--) {
            //             res.push(Math.round(Math.random() * 1000));
            //         }
            //         return res;
            //     })()
            // },
            {
                name:'最新数值',
                type:'line',
                data:(function (){
                    let res = [];
                    let len = 0;
                    while (len < 50) {
                        // res.push((Math.random()*10 + 5).toFixed(1) - 0);
                        res.push(0);
                        len++;
                    }
                    return res;
                })()
            }
        ]
    };

    // let count;

    const [option, setOption] = useState(DEFAULT_OPTION);

    async function fetchNewData() {
        let res = await fetch("http://localhost:8080/api/getPLC");
        let data = await res.json();
        console.log(data);
        const axisData = (new Date()).toLocaleTimeString().replace(/^\D*/,'');
        const newOption = cloneDeep(option); // immutable
        // newOption.title.text = '趋势图';
        // const data0 = newOption.series[0].data;
        const data1 = newOption.series[0].data;
        // data0.shift();
        // data0.push(Math.round(Math.random() * 1000));
        data1.shift();
        data1.push(data.value);

        newOption.xAxis[0].data.shift();
        newOption.xAxis[0].data.push(axisData);
        // newOption.xAxis[1].data.shift();
        // newOption.xAxis[1].data.push(count++);

        setOption(newOption);
    }

    useEffect(() => {
        const timer = setInterval(() => {
            fetchNewData();
        }, 1000);

        return () => clearInterval(timer);
    });

    const handleLedOn=async ()=>{
        let res = await fetch("http://localhost:8080/api/getLedON");
    }

    const handleLedOff=async ()=>{
        let res = await fetch("http://localhost:8080/api/getLedOFF");
    }


    return (

    <div>
        <div>
            <div>小米LED</div>
            <Flex gap="small" wrap>
                <Button type="primary" onClick={handleLedOn}>操作：开</Button>
                <Button onClick={handleLedOff}>操作：关</Button>
            </Flex>
        </div>
        <div style={{margin:'30px 0px'}}>PLC仿真数值:</div>
        <ReactECharts
            option={option}
            style={{ height: 400 }}
        />
    </div>
      );
}
